// 定义store
import { defineStore } from "pinia";
import { ref } from "vue";
/*
    defineStore参数描述：
        第一个参数：给状态起名，具有唯一性
        第二个参数：函数，可以把定义该状态中拥有的内容

    defineStore返回值描述：
        返回的是一个函数，将来可以调用该函数，得到第二个参数中返回的内容
*/
export const useUserInfoStore = defineStore("useInfoToken", {
  // 定义状态的内容
  state: () => ({
    nickName: "",
    userId: "",
    isAdmin: false,
    avatar: "",
    tokenInfo: "",
  }),
  actions: {
    //2. 定义一个函数，修改token的值
    setUserInfo(userInfo) {
      this.userId = userInfo.userId;
      this.nickName = userInfo.nickName.trim();
      this.isAdmin = userInfo.isAdmin;
      this.avatar = userInfo.avatar;
      this.tokenInfo = userInfo.tokenInfo;
    },
  },
  // 持久化存储
  persist: {
    key: "userStore", //存储名称
    storage: sessionStorage, // 存储方式
    paths: null, //指定 state 中哪些数据需要被持久化。[] 表示不持久化任何状态，undefined 或 null 表示持久化整个 state
  },
});

// 默认持久化配置
// 使用 localStorage进行存储
// store.$id作为 storage 默认的 key
// 使用 JSON.stringify / JSON.parse进行序列化/反序列化
// 整个 state 默认将被持久化
